<?php
session_start();

//1: 生成白色底图
$image = imagecreatetruecolor(100, 30);//默认黑色图片
$bgcolor = imagecolorallocate($image, 255,255,255);//设置白色
imagefill($image,0,0,$bgcolor);//填充颜色

//2.在底图上生成随机数字
$captcha_code = '';
/** 
for($i=0; $i<4; $i++){
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));//0-120为深色区间
    $fontcontent = rand(0,9);

    $x = ($i*100/4) + rand(5,10);
    $y = rand(5,10);
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}*/
//字母和数字，混合
for($i=0; $i<4; $i++){
    $fontsize = 6;
    $fontcolor = imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120));//0-120为深色区间
    $data = 'abcdefghijkmnpqrstuvwxy3456789';
    $fontcontent = substr($data,rand(0, strlen($data)), 1);
    $captcha_code .= $fontcontent;

    $x = ($i*100/4) + rand(5,10);
    $y = rand(5,10);
    imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//session保存验证码
$_SESSION['authcode'] = $captcha_code;

//3.增加点干扰元素
for($i=0; $i<200; $i++){
    $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
    imagesetpixel($image, rand(1,99), rand(1,99), $pointcolor); 
}
//4.增加线干扰元素
for($i=0; $i<3; $i++){
    $linecolor = imagecolorallocate($image, rand(80,220),rand(80,220),rand(80,220));
    imageline($image, rand(1,99), rand(1,99), rand(1,99), rand(1,99), $linecolor);
}

header('content-type:image/png');
imagepng($image);


imagedestroy($image);